﻿//给出一个区间[a, b]，计算区间内“神奇数”的个数。
//神奇数的定义：存在不同位置的两个数位，组成一个两位数（且不含前导0），且这个两位数为质数。
//比如：153，可以使用数字3和数字1组成13，13是质数，满足神奇数。
//同样153可以找到31和53也为质数，只要找到一个质数即满足神奇数。

//输入为两个整数a和b，代表[a, b]区间(1 ≤ a ≤ b ≤ 10000)。
//输出为一个整数，表示区间内满足条件的整数个数

#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;

bool isprim(int n) { // 判断是否是质数
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++) { // 试除法
        if (n % i == 0) return false;
    }
    return true;
}
int check(int n) { // 判断是否是神奇数
    vector<int> num;
    while (n) {
        num.push_back(n % 10);
        n /= 10;
    }

    for (int i = 0; i < num.size(); i++) { // 枚举⼗位数
        for (int j = 0; j < num.size(); j++) { // 枚举个位数
            if (i != j && num[i] != 0) {
                if (isprim(num[i] * 10 + num[j])) {
                    return 1;
                }
            }
        }
    }
    return 0;
}
int main() {
    // int a = 0, b = 0;
    // int ret = 0;
    // cin >> a >> b;
    // for (int i = a; i <= b; i++) {
    //     int x = a;
    //     vector<int> val;
    //     while (x != 0) {
    //         val.push_back(x % 10);
    //         x /= 10;
    //     }

    // }
    int a = 0, b = 0;
    cin >> a >> b;
    int ret = 0;
    for (int i = max(a, 10); i <= b; i++) {
        ret += check(i);
    }
    cout << ret << endl;
    return 0;
}